package pagination

var DefaultPageSize = 5

type Pagination struct {
	PageSize  int
	PageNum   int
	Total     int64
	TotalPage int
	Data      interface{}
}

// GetPageSize /每页显示数量
func (p *Pagination) GetPageSize() int {
	if p.PageSize <= 0 {
		p.PageSize = DefaultPageSize
	}
	return p.PageSize
}

// GetPageNum /第几页
func (p *Pagination) GetPageNum() int {
	if p.PageNum <= 0 {
		p.PageNum = 1
	}
	return p.PageNum
}

// GetTotalPage /页码总数
func (p *Pagination) GetTotalPage() int {
	p.SetTotalPage()
	return p.TotalPage
}

func (p *Pagination) SetTotalPage() {
	p.TotalPage = int(p.Total) / p.GetPageSize()
	if int(p.Total)%p.GetPageSize() != 0 {
		p.TotalPage++
	}
}

// GetOffset /从第几条开始
func (p *Pagination) GetOffset() int {
	return (p.GetPageNum() - 1) * p.GetPageSize()
}
